package com.oa.service;

import com.oa.back.ResponseBack;
import com.oa.common.base.Page;
import com.oa.common.base.Pageable;
import com.oa.common.vo.FlowVo;
import com.oa.entities.flows.Flow;

import java.util.List;

public interface FlowService extends UndeleteService<Long,Flow> {

    /**
     * 分页查询流程
     *
     * @param pageable
     * 分页的组件
     *
     * @param key
     * 关键字
     *
     * @param typeId
     * 公文类型的id
     *
     * @return
     */
    Page<FlowVo> findPage(Pageable pageable,String key,Long typeId);

    List<FlowVo> find(Long typeId);

    Flow find(Long typeId,Integer num);

    /**
     * 校验流程是否存在
     *
     * @param name
     * 流程的名称
     *
     * @param typeId
     * 公文类型的id
     *
     * @param id
     * 流程的id
     *
     * @return
     */
    Boolean validate(String name,Long typeId,Long id);

    /**
     * 提交流程的接口
     *
     * @param params
     * 参数
     * @see com.oa.common.dto.FlowDto
     * @return
     */
    ResponseBack<String> submit(String params);

    /**
     * 删除流程
     *
     * @param id
     * @return
     */
    ResponseBack<String> disableFlow(Long id);
}
